<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2.由变量提升产生的思考.html</title>
</head>
<body>
<script>
     var a;
    //  变量的提升(使用var声明的全局变量)是在代码执行之前就开始了，之所以这么做是为了提高解释性语言的效率
     console.log(a);

     function foo(){

     }

    //  函数的声明提升(使用function声明的函数)
    /*
      全局预解析在定义函数的时候不关心函数是否被使用
      函数局部预解析的时候如果内部函数没有被使用就不会提前定义
    
    */
     foo();

    //  使用这种方式定义函数在定义位置之前进行访问会报错 为什么呢？
    //  因为使用了var会提升
    /*
      var func;
      func();
      func=function(){

      }
    */


     func();

     var func =function(){

     }
</script>
</body>
</html>